@Luminary
2年前 提问
1个回答

文件包含漏洞的预防措施

007bug
2年前

预防文件包含漏洞的措施有以下这些:

  • 设置白名单:代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。如果需要使用文件包含,则通过使用白名单的方法对要包含的文件进行限制,这样可以做到既使用了文件包含,又可以防止文件包含漏洞。

  • 过滤危险字符:严格限制包含中的参数,取消那些不可控的参数。由于Include Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini),在Linux环境中可以通过”../../”的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。

  • 设置文件目录:PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。

  • 关闭危险配置:PHP配置中的allow_url_include选项如果打开,PHP会通过Include Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的。

  • 禁用相应函数:如果不需要文件包含,则关闭allow_url_include()函数,防止远程文件包含,这是最安全的办法。